package com.example.pei.ithinklearnt.view.customview;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;

/**
 * 这个MyViewPager用来处理滑动冲突（新加了侧滑菜单栏，个人的第二个fragment中右滑不会到第一个fragment，会触发侧滑栏）
 * Created by Pei on 2018/4/5.
 */

public class MyViewPager2 extends ViewPager {


    //分别记录上次滑动的坐标
    private int mLastX=0;
    private int mLastY=0;
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        int x=(int)ev.getX();
        int y=(int)ev.getY();
        switch (ev.getAction()){
            case MotionEvent.ACTION_DOWN:
                getParent().requestDisallowInterceptTouchEvent(true);
                break;
            case MotionEvent.ACTION_MOVE:
                int deltaX=x-mLastX;
                int deltaY=y-mLastY;

                //如果是上下滑动，则viewpager不进行拦截
                if(Math.abs(deltaX)<Math.abs(deltaY)){
                    getParent().requestDisallowInterceptTouchEvent(true);  //父view不可以拦截当前view的事件
                    return false;
                }else{
                    //如果是第一页
                    if(this.getCurrentItem()==0){
                        //右滑
                        if(deltaX>0){

                            //如果水平滑动距离太小，认为误操作，不拉出菜单栏
                            if(deltaX<18){
                                getParent().requestDisallowInterceptTouchEvent(true);
                                return true;
                            }

                            getParent().requestDisallowInterceptTouchEvent(false);
                            return false;
                        }else if(deltaX<0){
                            //左滑  拦截
                            getParent().requestDisallowInterceptTouchEvent(true);
                            return true;
                        }
                    }
                    //不在第一页
                    else{
                        getParent().requestDisallowInterceptTouchEvent(true);
                        //这里不能直接返回true，返回true，RecycleView就消耗了事件，下面的button就接受不到事件了
                        //所以张恒艳王荣荣手机点不到修改技能
                        return super.onInterceptTouchEvent(ev);
                    }
                }

                break;
            case MotionEvent.ACTION_UP:
                break;
            default:
                break;
        }
        mLastX=x;
        mLastY=y;
        return super.onInterceptTouchEvent(ev);
    }

    public MyViewPager2(@NonNull Context context) {
        super(context);
    }

    public MyViewPager2(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }


}
